package com.helin.helinhealth.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Web MVC配置类
 *
 * <p>
 * 该配置类用于配置Spring MVC相关设置，包括跨域访问策略、
 * 资源处理器、拦截器等。这对前后端分离的架构尤为重要。
 * </p>
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    /**
     * 配置跨域请求处理
     *
     * <p>
     * 允许前端应用从不同源访问API。这在前后端分离项目中是必要的，
     * 使前端开发服务器能无障碍地与后端API交互。
     * </p>

     *
     * @param registry 跨域配置注册表
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**") // 应用到所有路径
                .allowedOriginPatterns(
                        "http://localhost:[*]",
                        "http://127.0.0.1:[*]",
                        "http://172.20.10.9:[*]",
                        "http://172.20.10.10:5173",
                        "https://helin.club"
                ) // 允许的来源
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH", "HEAD") // 允许的HTTP方法
                .allowedHeaders("*") // 允许所有请求头
                .exposedHeaders("Content-Disposition", "Content-Type", "Content-Length") // 暴露给客户端的响应头，用于文件下载等场景
                .allowCredentials(true) // 允许发送凭证信息（如Cookie）
                .maxAge(3600); // 预检请求结果缓存时间（秒）
    }
}